Matrix printer control system

ABSTRACT

A system of controlling the operation of a matrix printer wherein printing is performed in each direction of travel of a printing element carriage. A printer control large scale integrated device is combined with a programmable character memory device and associated circuits for responding to character code data and to the position of the printing carriage and the direction of travel thereof. Code data is input in character by character format and, by means of counters and latching devices, the pulses or signals are sent to the respective printing elements for actuation thereof for printing the dots of a matrix character.

BACKGROUND OF THE INVENTION

In the field of matrix printers, it is, of course, well known that a printer may include one or more print heads which are caused to be moved in a reciprocating manner across the printer for printing in serial fashion. The print head may be moved by a cable and pulley arrangement, a lead screw, or a cam drive or like drive mechanism. Each of the print heads includes a plurality of printing elements supported in a group and each of the elements is actuated or energized at high speed to cause printing of dots in a matrix character by movement of dot-making elements including droplets of ink or printing wires, attached to the printing elements, and wherein the wires or droplets are caused to be impacted against the paper. The print wires or ink jet nozzles are usually closely spaced in vertical manner so as to print the dots which make up the characters as the print heads are moved across the printer. In this manner, a line of printed characters is completed upon travel of the print head in one direction across the paper. Printing may also be performed in the other direction if the required controls are included in the printer.

Another form of matrix printer includes the use of a plurality of printing elements supported from a carriage in a manner wherein the printing elements are aligned horizontally across the printer and upon each pass of the carriage, respective dots of characters are printed in a line or row and subsequent passes of the carriage and printing elements cause additional lines of dots to be printed to complete the dot matrix characters in the line of printing. Common arrangements include the use of four or eight printing elements supported from the carriage.

A timing strip with slots or like indicia is commonly used to dictate actuation of the printing elements wherein one or more sensors sense the slots or other indicia to print dots in precise columns across the paper. While the printing has usually been performed in one direction, for example, left to right, it is more recently that printing has been done in both directions of travel of the printing element carriage.

The control systems for matrix printers have included input converters, shift registers, buffer storage, character generators and solenoid or other print element drivers for printing a line of dots in successive manner across the paper to form a line of characters.

Representative prior art relating to control systems for matrix printers include U.S. Pat. No. 3,703,949 issued to R. Howard et al. on Nov. 28, 1972, wherein input information is loaded into a buffer in parallel and printing does not begin until the buffer is loaded to print a complete line. Detection of the location of the carriage moving the print head is performed independent of the carriage to actuate the print wires at the appropriate locations.

U.S. Pat. No. 3,719,781 issued to J. R. Fulton et al. on Mar. 6, 1973, shows a control system having a line relay for receiving the input signal, an input clock and a shift register as a buffer store, an operational store, a load detector, and operational control means to actuate the printer.

U.S. Pat. No. 3,789,969 issued to R. Howard et al. On Feb. 5, 1974, shows a control system wherein input data is fed in parallel into a multistage shift register, the output going to a character generator to provide signals representing a line of dots for the characters to be printed, and which trigger the operation of the print wire solenoids.

U.S. Pat. No. 3,833,891 issued to R. Howard et al. on Sept. 3, 1974 shows input data into a multistage shift register, selected stages of the register applied to a character generator to form signals representing the top line of characters to trigger operation of the print wire solenoids.

U.S. Pat. No. 3,834,304 issued to J. T. Potter on Sept. 10, 1974 shows logic circuits which include a read only memory for storing signal sets representing dot patterns to be printed in rows. The sets are read out to shift registers to control actuation of the hammers.

U.S. Pat. No. 3,858,703 issued to H. Duley on Jan. 7, 1975 discloses a bi-directional dual head printer which uses a registration strip with a plurality of equally spaced narrow transparent slots and wherein a recirculating shift register stores all of the characters until a full line of characters is printed.

U.S. Pat. No. 3,941,051 issued to G. B. Barrus et al. on Mar. 2, 1976, shows a printer system of bi-directional printing wherein a reciprocating shuttle system forms part of a dynamically balanced system wherein a cam motion engages an oppositely moving counterweight system.

U.S. Pat. No. 3,970,183 issued to P. Robinson on July 20, 1976 shows a bi-directional printer wherein monitoring is performed by detecting both the direction of print head movement and print head position at any time. Information is detected by a pair of optical channels and the registration strip has a pair of displaced sets of transparent slots therein. Circuitry is provided for storing data representing the next line to be printed in both the forward and the reverse formats.

U.S. Pat. No. 3,991,868 issued to P. Robinson et al. on Nov. 16, 1976 discloses printing of double and triple sized characters in segments which are stored in readable memories. The apparatus comprises a shift register having a plurality of stages equal to the number of standard size characters capable of being printed along a single line.

U.S. Pat. No. 4,024,506 issued to H. Spaargaren on May 17, 1977 shows control devices which include a starting position device, an address counter, a buffer store, a character generator and a row counter and column counter.

And, U.S. Pat. No. 4,026,402 issued to W. J. Byrd on May 31, 1977 shows a line printer which provides for either a single character or a burst of characters and a registration system serves the dual function of locating the proper position for a character to be printed and determining the direction of movement of the print head. A storage capability is in a recirculating memory and the data memory is a multistage shaft register which tracks the data in the recirculating memory.

SUMMARY OF THE INVENTION

The present invention relates to a matrix printer and more particularly, to a control system for the printer. A plurality of printing elements are aligned across the printer and are supported from a printing element carriage which is caused to be moved a precise distance in back and forth or reciprocating manner across the printer, such movement being transverse to the direction of paper movement. Upon such movement of the printing element carriage, printing is performed in each direction of travel thereof with the paper being advanced a precise distance at the end of printing in each such direction.

In one preferred embodiment of the present invention, a print wire is secured to each printing element whereupon actuation of each printing element causes its print wire to be impacted against paper, ribbon and a platen to print a dot on the paper. Another preferred embodiment of the invention includes the use of ink jet nozzles for causing droplets of ink to be impacted against or deposited on the paper. In each instance, the dots are serially deposited as the printing element carriage travels approximately one inch in such reciprocating manner so that in a standard 5×7 or 7×7 matrix character the carriage makes seven passes to complete a line of printing. Of course, to provide for space between the lines of printing, the carriage oscillates two times during which time the paper is advanced two dot spaces in a vertical direction before printing of a next line of characters is started.

A timing strip is mounted on the printing element carriage, the timing strip having a plurality of slots therein and a home position at each end of the strip, such home positions being designated a HOME 1 and a HOME 2, with the HOME 1 position being a window or aperture in the timing strip at the left hand end thereof and the HOME 2 position being a web or blank area on the timing strip at the right hand end thereof. The HOME 1 and HOME 2 positions are recognized by the printer control logic as turn around points for the carriage and the printing elements. An optical sensor is carried by or supported from the printer and is in the form of a light emitting diode of the interruptor type wherein either edge of each slot can trigger the sensor to initiate a character dot pulse or signal. If the sensor does not sense either edge of a slot, that is, if no pulse is received within a predetermined time, the printer is in a home position. As mentioned above, the HOME 1 position is a light or window area and the HOME 2 position is a dark or solid area, which home positions are detected and the direction of movement of the printing element carriage is read by the printer control logic.

When the printer is turned on, the carriage oscillates twice and the paper is advanced two dot spaces. The optical sensor senses the slots in the timing strip and also senses the home positions to determine the direction of movement of the printing element carriage. The input print data is received into an access memory and the control data is received into a programmable logic array unit. Each printing element can print ten characters in a line, and prior to each printing of the dots in each character, the data stored in the access memory is removed therefrom and is sent to the character read memory to generate a dot row for each character and for each printing element to print. The dot row data for each character is loaded into each dot data register and according to the direction of carriage movement, the dot row data is loaded either forward or backward into the registers. Each of the dot positions generates a hammer pulse which fires the respective printing elements on the presence of each dot of a dot row. A counter counts the number of home positions for the number of carriage oscillations to complete a line of printed characters.

In view of the above discussion, the principal object of the present invention is to provide a control system for operating a printer in bi-directional printing.

An additional object of the present invention is to provide a control system for a matrix printer wherein certain of the control devices can be programmed for several printing patterns.

Another object of the present invention is to provide a method for controlling a matrix printer in bi-directional printing wherein an optical device senses the dot positions of the characters and the home position of the printing elements.

A further object of the present invention is to provide a method for controlling a matrix printer wherein a printer control device and a character memory device are programmable for a plurality of printing patterns.

Another object of the present invention is to provide a control system for a matrix printer wherein data is input to a control printer device, and character and directional information is sent to a read only memory device with dot, character font and last row information being sent from the memory device to the control printer device with subsequent pulsing for actuation of the printing elements.

A further object of the present invention is to provide a control system capable of generating mixed width font characters in the same line of printing.

Another object of the present invention is to provide a read only memory device in the control system of a matrix printer which is capable of forming or generating a double width character matrix.

A further object of the present invention is to provide a read only memory device for generating additional dots for a wider character font.

Another object of the present invention is to provide a control printer device which is capable of handling a plurality of different font characters in various width and height matrix.

Additional advantages and features of the present invention will become apparent and fully understood from a reading of the following specification taken together with the annexed drawing.

DESCRIPTION OF THE DRAWING

FIG. 1 is a left front perspective view of a matrix printer utilizing the subject matter of the present invention;

FIG. 1A is an enlarged view of the timing strip and sensing means;

FIG. 1B is an end view of the structure shown in FIG. 1A;

FIG. 2 is a block diagram of the control system of the present invention; FIG. 3 is a block diagram of the printer controller;

FIG. 4 is a block diagram of the printer controller and memory units for expansion of characters;

FIG. 5 is a block diagram of the printer controller and memory units for expansion of print columns;

FIG. 6 is a block diagram of the character memory unit;

FIG. 7 is a timing diagram of the address and the data;

FIGS. 8A and 8B comprise a diagram of the printer timing;

FIG. 9 is a diagram of the character dot timing;

FIG. 10 is a flow diagram of the data input timing chain;

FIG. 11 is a flow diagram of the home detect control;

FIG. 12 is a flow diagram of the high order address counter;

FIG. 13 is a flow diagram of the low order address counter;

FIG. 14 is a flow diagram of the print sequence control;

FIG. 15 is a flow diagram of the DOT counter and timer;

FIG. 16 is a flow diagram of the character counter and timer;

FIG. 17 is a flow diagram of the row counter control;

FIG. 18 is a flow diagram of the extra dot row feed control;

FIG. 19 is an exemplary diagram for paper feed control; and

FIG. 20 is a flow diagram of the refresh counter.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring now to FIG. 1 there is shown a printer of the matrix type generally designated as 10, the top cover or portion thereof being removed to illustrate certain of the interior working parts which are contained within an enclosure 12 which assumes a rectangular shape and provides mechanical protection for a compact high speed printer. Specifically, the printer is an alpha-numeric single printing element electronic recorder which utilizes a control system adaptable for a family of printers performing various functions. A drive motor 14 is positioned to drive a cluster of gears 16, a drum-type cam 18 and a bevel gear 20 for driving a ribbon in continuous manner past the printing station. The drum cam 18 is continuously driven by the motor 14 and provides side-to-side drive or movement for a print carriage 22 drivingly connected with a rail of the cam and which carries a plurality of printing elements 24 for printing in a dot matrix manner on printing paper or like form which is caused to be moved across a platen 26 which platen is in the shape of a flat bar disposed laterally across the printer. The printing elements 24, hereinafter described in the preferred embodiment of the present invention as single wire solenoid driven elements, are aligned in a row and are caused to be moved a distance of approximately 0.6 to 0.7 inch during the printing operation which includes printing in each direction of movement or travel of the printing carriage 22.

At the end of each line of printing, the paper is caused to be moved by an incremental dot feed arm 28 wherein in the case of a seven dot height matrix character, the feed arm will advance the paper in slow feed manner a total of seven times to complete the printing of a line of characters. A line feed arm 30 provides for advancing the printing paper at a line-to-line spacing which would advance the paper in a fast feed manner for the next line of characters. A forms compensation solenoid 32 and a slip or form stop solenoid 34 are provided for their respective functions although such solenoids and associated apparatus are not a part of the present invention. The bevel gear 20 is secured to one end of a drive shaft 36 for driving an ink ribbon in a cassette which is not shown, but which is normally attached across the front of the printing elements or solenoids 24 and to the frame of the printer so as to remain in one position as the solenoids are caused to be driven back and forth for printing operations by the drum cam 18. A timing strip 38 (see also FIGS. 1A and 1B) is secured to the carriage 22 to be moved back and forth across the printer and operates with a sensing device secured to the printer to provide delayed dot position signals for the printer control logic to actuate the print solenoids 24 at the proper dot column positions. A carriage home position (HOME 1) at the left end of the strip 38 is in the form of a window 40 and a home position (HOME 2) at the right end of the strip is in the form of a web area 42, such window and web areas being detected by sensing means to provide turn around of the carriage.

The printer in the present invention is of modular design for a preferred structure wherein 7 FONT is a character with 7 dots wide and 9 FONT is a character with 9 dots wide and is controlled by means of a printer control module or chip 50, as seen in FIG. 2, a character read-only memory module or chip 52, a dot and home position sensing circuit 54, and a dot position sensor 56. The sensor 56 includes a source of light 46 and a photocell 48 for detecting presence of the home positions and of the slots in the strip 38 (FIGS. 1A and 1B). The control module 50, the memory module 52 and the sensing circuit 54 are installed on a basic driver board attached to the printer frame. Additional circuitry includes a plurality of print solenoid drivers 58 for the print wire solenoid coils 60, 62, 64 and 66. The print solenoid drivers 58 are Darlington transistors having a fail-safe mechanism implemented therein in the form of a reset circuit to protect them from incorrect operation during power-up and power-down periods. A reset signal is connected to be high when the active level of voltage is reached (4.75-5.25 volts) and when a pair of transistors are activated, the line is pulled up to 5 volts and the print solenoids 24 are ready to be energized. During power-down, a low level reset signal is sent and the pair of transistors are cut off, so that the print solenoids will not be incorrectly triggered. The basic control diagram also includes hammer pulse width compensators 68 and a motor control circuit 70 for the motor 14. The hammer pulse width compensators on the basic driver board provide activation time for the print solenoids 24 to print full dots and half dots independently. Each compensator is basically a one shot timer with a standard pulse TW equal to 340 microseconds when triggered by the falling edge of the hammer signals (HMRSGF or HMRSGH). Representative of the type compensator 68 used in the invention is the unit produced by Signetics under part number NE 556. When V_(p), the 28 volt power supply, deviates from the nominal voltage, the output pulsewidth (HMRPF or HMRPH) will be inversely adjusted to maintain an even print quality. An empirical relationship between V_(p) (volts) and TW (microseconds) is established and expressed by the following equation--TW=10(28-V_(p))+340. 10 microseconds must be added to (or subtracted from) the hammer pulsewidth for each volt drop (or rise) on the 28 volt power line. The time constant of the compensator is designated at 2.8 milliseconds and the exponential nature of the RC network affects the actual compensator with a non-linear correction against changing power supply voltage. A 20 microsecond over-compensation is provided at the low end of V_(p) (23.8 volts) and a 10 microsecond under-compensation at the high end of V_(p) (31.0 volts). As a result, the maximum hammer pulsewidth errors, +3.6% to -5.5%, are introduced into the compensators. A clock, write (WR) and reset signal are input to the control module 50 along with Dφ-D7 which comprise the first to eighth bits of the input data. A busy signal and a motor jam (MTR JM) signal are connected to the motor control 70. The dot and home position sensing circuit 54 and the motor control circuit 70 are fully disclosed in a copending application and assigned to the same assignee as the present application, Ser. No. 869,890, filed Jan. 16, 1978.

In FIG. 3 is shown a block diagram of the printer control module 50 and including at least four main sections or areas which are the memory unit 80, a programmable logic unit (PLA1) 82, a programmable logic unit (PLA2) 84 and a plurality of dot data registers 86 for the print solenoids 24. The control module 50 has the two array units 82 and 84, the memory unit 80, and four 13 bit serial in/serial out registers 86 for operation from a single phase external clock arranged to provide storage for 40 print characters plus control and control options to implement bidirectional print control of the 40 column printer. Five control pins provide general purpose drivers and fast slew for the record paper. A parallel data code is strobed into a data latch 88 by a write signal (WR) and is then stored in the access memory 80 or RAM device. The control function data is decoded in the logic unit 82 (PLA1) and a double wide character funtion turns on an indicator bit and stores this bit into the memory 80 along with those data codes which are for the double width characters and each data code occupies two locations in memory. The start to print (PRT) function turns the motor on signal (MTRON) to a true state and the optical sensor 56 of the printer senses dot positions from a leading edge and a trailing edge of the slots in the timing strip. In this manner, the sensor 56 must sense three consecutive slots or six slot edges prior to entering into the home search mode; and then must sense two home positions prior to generation of any hammer signals. The leading edge of the dot position line 90 (DOTPOS) generates a hammer generation full signal (HMSRGF) and the trailing edge generates a hammer generation half signal (HMRSGH) with the dot position (DOTPOS) also identifying the two home positions, HOME 1 and HOME 2 at the ends of the strip by counting the number of times that the sensor 56 passes the home positions 40 and 42. DOTPOS is the dot position pulse which is generated by the dot position sensor 56, and DOT is the pulse generated by each edge of the dot position pulse. The position and the direction of travel of the print carriage 22 are determined by whether or not a dot pulse appears as a result of sensing either edge of a slot in the timing strip 38. If a dot pulse does not appear within a predetermined amount of time, it is known that the printer is in one or the other of the home positions. The HOME 1 position or the window area 40 of the timing strip is a logic false input, and the HOME 2 position which is the web area 42 of the timing strip is a logic true input.

The data code stored in the memory 80 is sent out at the second home position after the motor on output (MTRON) becomes true, and a pulse on the address synchronizing line (ADDSYNC) indicates the start of a fifteen bit serial address for the character read only memory 52. The first four bits of the code relate the row address, the next eight bits identify the character code, the thirteenth bit is for a double width character, and the fourteenth bit indicates the second part or portion of the double width character, with the fifteeth bit being reserved for a forward printing direction, that is, from left to right in the travel of the print carriage 22. CASIN is a printer control chip input (cascade) which blocks the print data to be loaded into the RAM 80 when the input is high. CASOUT is a control chip output (cascade). The character memory 52 returns a fourteen bit dot information on a serial data line (SER DATA) and loads this information into the dot data registers 86, the first bit being for a nine dot wide character, and the second bit indicating a last row of print line with the remaining bits being dots for one row of a character print. The serial address is sent out four times and the dot information is returned four times prior to printing out each row of dots in a character. The dot data registers 86 comprise four serial in/serial out types for the four print solenoids 24 with each register being 13 bits wide. As soon as all four 12 bits of dot data are clocked into the four registers, an additional bit position for all registers is clocked. The leading edge of the DOTPOS pulse clocks the dot into a latch 96 that is for full dot print and the trailing edge of the DOTPOS pulse clocks the dot into the latch 96 for half dot print. A 15 bit address register 92 receives a 4 bit row address, an 8 bit character code, a double wide indicator bit, a second part indicator bit and a forward direction bit which bits are parallel loaded prior to sending serially. The address synchronizing pulse is shifted through a data timing register 94 which pulse is synchronized with the serial address and the serial data. At a specified clock time, the register decodes the character font information and the end of line information from the 14 bit serial data.

As mentioned above, there are four dot data registers 86 for the four print solenoids with the hammer full generation signal (HMRSGF) and the hammer half generation signal (HMRSGH) being responsible for the hammer printing full and hammer printing half pulses, which pulses are generated outside the printer control module or chip 50. Each pulse makes the print solenoid fire in the presence of each dot latching in the full and half dot latch 96. The row address requires a count of seven times for the seven dot high characters, and of course, nine times for the nine dot high characters before a character line is completed and, at the end of the last count, the motor on output (MTRON) goes false.

For either fast or slow paper feed, the printer must receive the paper feed command and the number of paper feed data and the motor on output line (MTRON) is turned true when paper feed data is received and a seven bit binary number may be chosen to give from 1 to 127 dot row feeds on the slow paper feed, and from 1 to 127 line feeds for the fast paper feed option. The sensor 56 must detect six slot edges from the dot position pulse prior to entering the home search mode. A counter will time out the paper advance by counting the number of home positions sensed and at the end of the last count the motor on output is turned false.

A block diagram of the printer control module 50 and memory units for expansion of characters is shown in FIG. 4 wherein a single printer control module is used with two read only memories 100 and 102, and connected by the serial address (SER ADD), the serial synchronizing (SER SYNC), and the serial data (SER DATA) lines. Typical pin out numbers are shown for the ROM 100.

A similar diagram of a pair of printer control modules 110 and 112 are shown in FIG. 5 for expansion of the print columns wherein each of the control modules are associated with a respective memory unit 114 and 116 in a one-to-one or singular manner.

In FIG. 6 is shown a block diagram of the character memory 52 which is a diffused mask programmable array consisting of 128 character locations in a twelve by ten matrix configuration. The characters can be programmed in N×M combinations where N is either 10 or 12 and M can be 5, 6, 7, 8, 9 or 10. The character memory 52 receives address from the printer control module or chip 50 on the serial address line (SER ADD) and the address synchronizing pulse (ADD SYNC) indicates the start of the 15 bit serial address. The character memory 52 issues a 14 bit serial data (SER DATA) to the control module 50 immediately after receiving the 15 bit serial address from the control module.

The address synchronizing pulse and the serial address pulse are the two inputs from the printer control module 50 and a pulse on the address synchronizing line indicates the start of the 15 bit serial address and loads the address into the address register 120 in parallel manner. During the printing cycle and before each dot row of printing, the printer control module 50 accesses the character memory 52 a total of four times by sending four addresses in sequential manner. The memory 52 sends back four dot row data corresponding to the addresses in the printer control module 50 for the four print solenoids 24.

As better shown in FIG. 7, the first four bits of the 15 bit serial address, SA0 to SA3, contain a character row address and the next eight bits, SA4 to SA11, contain a character code. The thirteenth bit SA12 when equal to 1 (or true), indicates to the memory 52 logic that the character is double width and when SA12 is equal to 0 or in the false state, the character is single width. The fourteenth bit when true, that is, when SA13 equals 1, informs the memory logic that the address is for the second half of a double wide character and when false or when SA13 is equal to 0, the address is for the first half of a double wide character. The last bit, when SA14 is equal to 1 or is true, indicates the forward direction of a dot row and when the last bit is false, or when SA14 is equal to 0, the indication is for the reverse direction of a dot row.

Referring back to FIG. 6, the first four bits SAφ to SA3 of the serial address are decoded by the row address decoder 122 which generates 120 row select lines to the ROM 123. The bits SA4 to SA11 are decoded by a column address decoder 124 to generate 128 column select lines for the ROM 123, with the bit SA10 being used for a chip selection. The arrangement of the ROM 123 is 128 by 12 by 10 bits, and the 12 outputs thereof are indentified as ROM φ through ROM 11. The input bits of the serial address to a control bit decoder 126 are SA0 to SA3 inclusive, SA10 and SA12 to SA14. A double width character signal (DBWD), the second part of a double width character signal (DBWD2), a forward carriage direction signal (FWD), an end of the print line or last dot row of the line signal (EDLINE), a chip selection and a parallel load are the outputs of the decoder 126.

The first three outputs of the decoder 126 are information sent to a dot row formatter 128, the purpose of which is to form a dot row data before being sent out to the printer control module 50. The end of line or last dot row of printing signal may be pre-programmed to any row from 1 to 10, and it is to be encoded into a data register 130 for indicating to the printer control module 50 that this is the last dot row of a character line. The chip select signal is also pre-programmed for one or two character memories to be in use. The SA10 bit is not used if one character memory is used in the printer, whereas the SA10 bit is a chip selective bit when two character memories are used. The data outputs on the lines ROM φ to ROM 11 of the ROM 123 are reformed by the dot row formatter 128 to comply with a direction of the print solenoids 24 and the single width or double width character requirements. The reformed data SD2 to SD10 are loaded in parallel manner into the data register 130.

The dot row data are loaded from the dot row formatter 128 into the data register 130 after each serial address is received and the data is shifted out serially on the serial data line. The fourteen bit serial data, as seen in FIG. 7, essentially consists of two bits of control code and 12 bits of dot row data. The first bit of control code word when held true, that is when SDφ equals 1, indicates to the control module 50 that it is a 9 font character and when the control word is held false, that is when SDφ is equal to 0, it is a 7 font character. The second bit of control code word when true, that is when SD1 is equal to 1, informs the control module 50 that it is the last row of a character line and when the control code word is false, that is when SD1 is equal to 0, it is not the last row of a line. The next 12 bits which are SD2 to SD13 contain the serial dot row information of a character such as 10 dots for 7 font characters and 12 dots for 9 font characters. The formulations of the dot row information are shown in the following tables for 7 font and 9 font, single wide word and double wide word.

    ______________________________________                                         Single Wide Word 9 FONT (DBWD = "O")                                           FWD = "1"     FWD = "0"     Output Data                                        ______________________________________                                         ROM φ     ROM 11        SD2                                                ROM 1         ROM 10        SD3                                                ROM 2         ROM 9         SD4                                                ROM 3         ROM 8         SD5                                                ROM 4         ROM 7         SD6                                                ROM 5         ROM 6         SD7                                                ROM 6         ROM 5         SD8                                                ROM 7         ROM 4         SD9                                                ROM 8         ROM 3         SD10                                               ROM 9         ROM 2         SD11                                               ROM 10        ROM 1         SD12                                               ROM 11        ROM φ     SD13                                               ______________________________________                                         Single Wide Word 7 FONT (DBWD = "0")                                           FWD = "1"     FWD = "0"     Data                                               ______________________________________                                         ROM φ     ROM 9         SD2                                                ROM 1         ROM 8         SD3                                                ROM 2         ROM 7         SD4                                                ROM 3         ROM 6         SD5                                                ROM 4         ROM 5         SD6                                                ROM 5         ROM 4         SD7                                                ROM 6         ROM 3         SD8                                                ROM 7         ROM 2         SD9                                                ROM 8         ROM 1         SD10                                               ROM 9         ROM φ     SD11                                               ______________________________________                                          Double Wide Word 9 FONT (DBWD2 = "0")                                         FWD = "1"       FWD = "0"       Data                                           ______________________________________                                         ROM φ       φ           SD2                                            φ           ROM 4 + ROM 5   SD3                                            ROM φ + ROM 1                                                                              φ           SD4                                            φ           ROM 3 + ROM 4   SD5                                            ROM 1 + ROM 2   φ           SD6                                            φ           ROM 2 + ROM 3   SD7                                            ROM 2 + ROM 3   φ           SD8                                            φ           ROM 1 + ROM 2   SD9                                            ROM 3 + ROM 4   φ           SD10                                           φ           ROM φ + ROM 1                                                                              SD11                                           ROM 4 + ROM 5   φ           SD12                                           φ           ROM φ       SD13                                           ______________________________________                                         Double Wide Word 7 FONT (DBWD2 = "0")                                          FWD = "1"       FWD = "0"       Data                                           ______________________________________                                         ROM φ       φ           SD2                                            φ           ROM 3 + ROM 4   SD3                                            ROM φ + ROM 1                                                                              φ           SD4                                            φ           ROM 2 + ROM 3   SD5                                            ROM 1 + ROM 2   φ           SD6                                            φ           ROM 1 + ROM 2   SD7                                            ROM 2 + ROM 3   φ           SD8                                            φ           ROM φ + ROM 1                                                                              SD9                                            ROM 3 + ROM 4   φ           SD10                                           φ           ROM φ       SD11                                           ______________________________________                                         Double Wide Word 9 FONT (DBWD2 = "1")                                          FWD = "1"       FWD = "0"       Data                                           ______________________________________                                         ROM 5 + ROM 6   φ           SD2                                            φ           ROM 10 + ROM 11 SD3                                            ROM 6 + ROM 7   φ           SD4                                            φ           ROM 9 + ROM 10  SD5                                            ROM 7 + ROM 8   φ           SD6                                            φ           ROM 8 + ROM 9   SD7                                            ROM 8 + ROM 9   φ           SD8                                            φ           ROM 7 + ROM 8   SD9                                            ROM 9 + ROM 10  φ           SD10                                           φ           ROM 6 + ROM 7   SD11                                           ROM 10 + ROM 11 φ           SD12                                           φ           ROM 5 + ROM 6   SD13                                           ______________________________________                                         Double Wide Word 7 FONT (DBWD2 = "1")                                          FWD = "1"       FWD = "0"       Data                                           ______________________________________                                         ROM 4 + ROM 5   φ           SD2                                            φ           ROM 8 + ROM 9   SD3                                            ROM 5 + ROM 6   φ           SD4                                            φ           ROM 7 + ROM 8   SD5                                            ROM 6 + ROM 7   φ           SD6                                            φ           ROM 6 + ROM 7   SD7                                            ROM 7 + ROM 8   φ           SD8                                            φ           ROM 5 + ROM 6   SD9                                            ROM 8 + ROM 9   φ           SD10                                           φ           ROM 4 + ROM 5   SD11                                           ______________________________________                                    

The printer timing chart is shown in FIGS. 8A and 8B wherein the time period covers approximately 600 milliseconds with the chart showing paper displacement and carriage displacement in relation to running time of the motor 14 and sensing of the home positions 40, 42 along with actuation of the print solenoid 24. Each of the four solenoids 24 of the printer may be energized independently at a maximum repetition rate of one solenoid firing each 800 microseconds. In normal operation, a 340 microsecond pulse of 28 volts DC is applied to the solenoid 24 to print a dot and the printer circuitry adjusts the print pulse for variations in the 28 volt supply as described above.

As briefly mentioned above, the sensor 56 which detects both dot and home positions is an interruptor type of light emitting diode/phototransistor pair which straddles the timing strip 38 mounted on the carriage 22 and initiates print solenoid firing pulses according to the apertures in the timing strip (FIGS. 1A and 1B). There are 51 slots or rectangular apertures with a web portion between the slots and the edges of each slot trigger the sensor to initiate a character dot pulse. At each end of the series of apertures is a home position area, HOME 1 being the rectangular window 40 in the timing strip, and HOME 2 being the solid or web portion 42 at the other end of the apertures (FIG. 1A). Since printing occurs in both directions of carriage travel, the HOME 1 and HOME 2 positions must be different to control the sequence of dots. The leading edge of each aperture or slot is used to provide a pulse for full dot spacing, whereas half dot spacing is sensed from the trailing edges of the slots. Referring now to the dot timing chart in FIG. 9, an adjustable electrical delay of approximately 115 microseconds is built into the circuit to allow for vertical dot alignment and as a result, there is a need for a 51st slot in the timing strip.

The several control function codes utilized in the printer include a clear printer function (CLR) which clears the memory 80 and all registers and flip-flops in the control module 50, with the exception of the register which is used to store the number of extra dot rows per line of print. A function (DAS) to deactivate all solenoids is used to turn off all those solenoids that require external time controls which include the printer control module or chip outputs SO1 to SO4 inclusive.

A double width character function (DWC) is given prior to sending the data that is to be printed and causes the characters to be printed at double width in that each character takes up the space occupied by two single width characters in the memory 80. A double width indication bit is also stored with each character. The single width character function (SWC) is used in conjunction with the double width function to obtain a mixture of single and double width characters in the same line of printing. As long as the single width characters are sent in groups of two, it is possible to have any arrangement of single and double width characters in a line. The two functions are used to bracket the data and the logic automatically goes to single width characters after a complete print cycle, after a clear printer function and after a reset.

A fast paper feed or line feed function (FPF) is used to feed paper in line-by-line manner when the printer is so equipped with this feature. The function is followed by the number of lines of paper to be fed, and when the data is sent, the motor on output (MTRON) is switched to a true state. The output fast slew (FSLEW) state will switch to true at each home position for about 20 milliseconds. The number of fast slew pulses (FSLEW) is equal to the number of lines of paper to be fed past the printing station and at a home position after the last fast slew pulse, the motor on output (MTRON) is switched to a false state. The home position information is given by the dot position signal (DOTPOS) input. A slow paper feed or dot row feed function (SPF) is used to feed paper in dot-by-dot row manner. The function is followed by the number of dot rows of paper to be fed. When the data is sent, the motor on output (MTRON) is switched to a true state and the number of home positions that are informed by the dot position input (DOTPOS) is equal to the number of dot rows and at the last home position the motor on output is switched to the false state.

Another function is the extra dot rows per line (EDR) which is used to set the number of extra dot rows of paper to be fed after each print line. The function code is to be followed by a number which is used to indicate the number of extra dot rows; this number can be 0 through 7 in binary and must be reset after each power up of the printer with the D3 through D7 data bits being ignored. Once the number is set inside the extra dot row register it will remain set until changed.

The start to print function (PRT) switches the motor on output (MTRON) to a true state and at this time the dot position line (DOTPOS) consists of input pulses for the dot and the home positions. Starting at the second home position, the character codes stored in the ROM 80 are sent out and the dot data are received from an external character memory. The outputs HMRP1, HMRP2, HMRP3 and HMRP4 are pulsing the presence of the dot position pulses and the dot data. The motor on output (MTRON) will be turned off at a home position after the second bit of the serial data line is encoded true. This bit indicates that this is the last row of the print line. If the extra dot rows per line function (EDR) has not been set to zero, the motor on output will stay true until extra home positions are reached and the number of the extra home positions matches the number in the extra dot row register. Then the motor on output is turned off.

the control function codes also apply to solenoids 1, 2, 3, and 4 wherein the functions can turn the outputs SO1 through SO4 to true states in individual manner. The outputs will stay in true states until the clear printer function (CLR) or the deactivate all solenoids function (DAS) is received. The reset input can also turn the outputs to an off condition. The particular function of these solenoids are to activate a form, to provide for full paper cut, for partial paper cut or for an active spare which may be utilized for a further function.

Referring back to FIG. 3 which shows the programmable logic array units 82 and 84, PLA1 is activated by 25 flip flops. The unit 82 consists of four logic control functions which are command control and decode, paper feed control, print sequence control and input timing control. The names and types of the flip flops and their input and reset conditions are shown in Table A-1.

                                      TABLE A-1                                    __________________________________________________________________________     PLA1 Control Section                                                           CONTROL  NAME   TYPE                                                           SECTION  OF F/F OF F/F    INPUT COND.                                                                               RESET COND.                               __________________________________________________________________________     Command  PRT    T           T.sub.PRT   RSTALL                                 Control  EDR    T           T.sub.EDR   RSTALL                                  and     SPF    T           T.sub.SPF   RSTALL                                 Decode   FPF    T           T.sub.FPF   RSTALL                                          DBWD   T           T.sub.DBWD  RSTALL                                 Paper    FPFC   T           T.sub.FP RSTALL                                    Feed     SPFC   T           T.sub.SPFC  RSTALL                                 Control  PFC6   T/D   T.sub.PFC6 + PFCLOAD D6                                                                          RSTALL                                          PFC5   T/D   T.sub.PFC5 + PFCLOAD D5                                                                          RSTALL                                          PFC4   T/D   T.sub.PFC4 + PFCLOAD D4                                                                          RSTALL                                          PFC3   T/D   T.sub.PFC3 + PFCLOAD D3                                                                          RSTALL                                          PFC2   T/D   T.sub.PFC2 + PFCLOAD D2                                                                          RSTALL                                          PFC1   T/D   T.sub.PFC1 + PFCLOAD D1                                                                          RSTALL                                          PFCφ                                                                              T/D   T.sub.PFCφ  + PFCLOAD Dφ                                                                 RSTALL                                 Print    C1     T           T.sub.C1    RSTALL                                 Sequence Cφ T           T.sub.Cφ                                                                               RSTALL                                 Control  CNT2   T           T.sub.CNT2  RSTALL                                          CNT1   T           T.sub.CNT1  RSTALL                                          CNTφ                                                                              T           T.sub.CNTφ                                                                             RSTALL                                          EXD2   D       EDRLOAD D2      RST                                             EXD1   D       EDRLOAD D1      RST                                             EXDφ                                                                              D       EDRLOAD Dφ  RST                                    Input    TC2    T           T.sub.TC2   RSTALL                                 Timing   TC1    T           T.sub.TC1   RSTALL                                 Control  TCφ                                                                               T           T.sub.TCφ                                                                              RSTALL                                 __________________________________________________________________________               The logic equations of PLA1 are as follows:                           T.sub.TCφ                                                                         =                                                                                ##STR1##                                                              T.sub.TC1                                                                             =                                                                                ##STR2##                                                              T.sub.TC2                                                                             =                                                                                ##STR3##                                                                       ##STR4##                                                              CLR    =                                                                                ##STR5##                                                              CLRALL                                                                                =                                                                                ##STR6##                                                                       ##STR7##                                                                       ##STR8##                                                                       ##STR9##                                                                       ##STR10##                                                             CLRCCDC                                                                               =                                                                                ##STR11##                                                                      ##STR12##                                                                      ##STR13##                                                                      ##STR14##                                                                      ##STR15##                                                                     RSTTIMER                                                               T.sub.PRT                                                                             =                                                                                ##STR16##                                                                      ##STR17##                                                                      ##STR18##                                                             T.sub.EDR                                                                             =                                                                                ##STR19##                                                                      ##STR20##                                                             T.sub.SPF                                                                             =                                                                                ##STR21##                                                                     Dφ + DECODE . SPF                                                  T.sub.FPF                                                                             =                                                                                ##STR22##                                                                      ##STR23##                                                             T.sub.DBWD                                                                            =                                                                                ##STR24##                                                                      ##STR25##                                                                      ##STR26##                                                             SS01   =                                                                                ##STR27##                                                                      ##STR28##                                                             SS02   =                                                                                ##STR29##                                                                      ##STR30##                                                             SS03   =                                                                                ##STR31##                                                                      ##STR32##                                                             SS04   =                                                                                ##STR33##                                                                      ##STR34##                                                             SFSLEW                                                                                =                                                                                ##STR35##                                                                      ##STR36##                                                             RSφ1234                                                                           =                                                                                ##STR37##                                                             T.sub.FPFC                                                                            =                                                                                ##STR38##                                                                      ##STR39##                                                             T.sub.SPFC                                                                            =                                                                                ##STR40##                                                                      ##STR41##                                                            MTRON  = PRT + SPFC + FPFC                                                     PFC LOAD                                                                              = FPF . DECODE + SPF . DECODE                                            T.sub.PFCφ                                                                        =                                                                                ##STR42##                                                             T.sub.PFC1                                                                            =                                                                                ##STR43##                                                             T.sub.PFC2                                                                            =                                                                                ##STR44##                                                             T.sub.PFC3                                                                            =                                                                                ##STR45##                                                             T.sub.PFC4                                                                            =                                                                                ##STR46##                                                             T.sub.PFC5                                                                            =                                                                                ##STR47##                                                             T.sub.PFC6                                                                            =                                                                                ##STR48##                                                                      ##STR49##                                                             T.sub.Cφ                                                                          =                                                                                ##STR50##                                                                     PRT + C1 . Cφ . HMEPLS . EDLINE . MATCH . PRT                      T.sub.Cl                                                                              =                                                                                ##STR51##                                                                      ##STR52##                                                             T.sub.CNTφ                                                                        =                                                                                ##STR53##                                                                      ##STR54##                                                             T.sub.CNT1                                                                            =                                                                                ##STR55##                                                             T.sub.CNT2                                                                            =                                                                                ##STR56##                                                            EDRLOAD                                                                               = EDR . DATA . DECODE                                                    MATCH  =                                                                                ##STR57##                                                                      ##STR58##                                                            ACTPRT = C1 . Cφ                                                            PRTHME                                                                                =                                                                                ##STR59##                                                             ENRCNT                                                                                 =                                                                               ##STR60##                                                            __________________________________________________________________________

The command control and decode section provides for an 8 bit data code being strobed with a write (WR) signal into the data latch with the function decoder operating on the following functions: start to print (PRT), extra dot rows per line (EDR), slow paper feed (SPF), fast paper feed (FPF), a double wide print (DBWD).

In the paper feed control, the function code for fast (line) paper feed control (FPFC) or for slow (dot row) paper feed control (SPFC) is given first followed by the number of lines or dot rows, with the MTRON line being activated or turned true immediately after this command. The paper feed counter will count the first to the seventh bit of the paper feed data (PFCφ to PFC6) according to the home position (HOME 1 or HOME 2) until the count reaches zero and the MTRON line goes false. PFC LOAD is the time period for loading the slow or fast paper feed.

The print sequence control provides that the start to print (PRT) function initiates the print cycle and any data that has been loaded into the print data memory or RAM 80 will be printed. Cφ and C1 are the status bits for the print sequence control, CNTφ, CNT1, and CNT2 are the status bits for the extra dot row feed control, and EXDφ, EXD1, and EXD2 are the first, second and third bits of the extra dot row register. In addition to character dot rows, extra dot rows are also given. EDR LOAD is the time period for loading the extra dot row data.

The input timing control controls the print data into the RAM 80 with a double wide character being loaded with the same print data twice into the RAM, the TCφ, TC1 and TC2 being the status bits for the data input timing chain. A double wide indicator bit is generated and is loaded into the RAM with the print data. If the character is single width, the data will be loaded only once into the RAM without the indicator bit.

The logic equations of PLA1 are as follows:

    __________________________________________________________________________      T.sub.TCφ =                                                                        ##STR61##                                                              T.sub.TC1 =                                                                            ##STR62##                                                              T.sub.TC2 =                                                                            ##STR63##                                                                      ##STR64##                                                              CLR =                                                                                  ##STR65##                                                              CLRALL =                                                                               ##STR66##                                                                      ##STR67##                                                                      ##STR68##                                                                      ##STR69##                                                                      ##STR70##                                                              CLRCCDC =                                                                              ##STR71##                                                                      ##STR72##                                                                      ##STR73##                                                                      ##STR74##                                                                      ##STR75##                                                                     RSTTIMER                                                                T.sub.PRT =                                                                            ##STR76##                                                                      ##STR77##                                                                      ##STR78##                                                              T.sub.EDR =                                                                            ##STR79##                                                                      ##STR80##                                                              T.sub.SPF =                                                                            ##STR81##                                                                     Dφ + DECODE . SPF                                                   T.sub.FPF =                                                                            ##STR82##                                                                      ##STR83##                                                              T.sub.DEWD =                                                                           ##STR84##                                                                      ##STR85##                                                                      ##STR86##                                                              SS01 =                                                                                 ##STR87##                                                                      ##STR88##                                                              SS02 =                                                                                 ##STR89##                                                                      ##STR90##                                                              SS03 =                                                                                 ##STR91##                                                                      ##STR92##                                                              SS04 =                                                                                 ##STR93##                                                                      ##STR94##                                                              SFSLEW =                                                                               ##STR95##                                                                      ##STR96##                                                              RS01234 =                                                                              ##STR97##                                                              T.sub.FPFC =                                                                           ##STR98##                                                                      ##STR99##                                                              T.sub.SPFC =                                                                           ##STR100##                                                                     ##STR101##                                                            MTRON = PRT+ SPFC + FPFC                                                       PFC LOAD =                                                                             FPF . DECODE + SPF . DECODE                                             T.sub.PFCφ =                                                                       ##STR102##                                                             T.sub.PFC1 =                                                                           ##STR103##                                                             T.sub.PFC2 =                                                                           ##STR104##                                                             T.sub.PFC3 =                                                                           ##STR105##                                                             T.sub.PFC4 =                                                                           ##STR106##                                                             T.sub.PFC5 =                                                                           ##STR107##                                                             T.sub.PFC6 =                                                                           ##STR108##                                                                     ##STR109##                                                             T.sub.Cφ =                                                                         ##STR110##                                                                    PRT + C1 . Cφ . HMEPLS . EDLINE . MATCH . PRT                       T.sub.C1 =                                                                             ##STR111##                                                                     ##STR112##                                                             T.sub.CNTφ =                                                                       ##STR113##                                                                     ##STR114##                                                             T.sub.CNT1 =                                                                           ##STR115##                                                             T.sub.CNT2 =                                                                           ##STR116##                                                            EDRLOAD =                                                                              EDR . DATA . DECODE                                                     MATCH =                                                                                ##STR117##                                                                     ##STR118##                                                            ACTPRT =                                                                               C1 . Cφ                                                             PRTHME =                                                                               ##STR119##                                                             ENRCNT =                                                                               ##STR120##                                                               PLA2 is activated by 26 flip flops and has four logic control sections      which are home detect and control, RAM address control and refresh,            direction, and ROM access control. The names and types of the flip flops       and the input and reset conditions are shown in Table A-2. In this Table,      HDφ, HD1 and HD2 indicate the first to third status bits of the home       detect control, CCφ-CC3 are the first to fourth bits of the character      counter, and DCφ-DC3 are the status bits of the dot counter.               Fφ-F4 indicate the first to fifth bits of the refresh counter which        are addresses during refreshing of the RAM 80. LCφ-LC3 indicate the        first to fourth bits of the RAM address with HCφ and HC1 being the         fifth and sixth bits of the RAM address. In the direction ROM access           control section FWD indicates the carriage forward direction ACCROM is         the time period for the character ROM 52 access, RAMFULL indicates that        the RAM 80 is filled with print data, and SCOMPT or CHECK is a signal          which indicates that a train of dot data is received by the printer            control unit after each character ROM access. ENRCNT is incrementing the       row counter at each HOME position during printing. SS01-SS04 are               resettable flip-flops.                                                    

    TABLE A-2                                                                      ______________________________________                                         PLA2 Control Section                                                           CONTROL  NAME       TYPE     INPUT   RESET                                     SECTION  OF F/F     OF F/F   COND.   Cond.                                     ______________________________________                                         Home Detect                                                                             HD2        T        T.sub.HD2                                                                              RSTALL                                    and      HD1        T        T.sub.HD1                                                                              RSTALL                                    Control  HDφ    T        T.sub.HDφ                                                                          RSTALL                                             CC3        T        T.sub.CC3                                                                              RSTCCDC                                            CC2        T        T.sub.CC2                                                                              RSTCCDC                                            CC1        T        T.sub.CC1                                                                              RSTCCDC                                            CCφ    T        T.sub.CCφ                                                                          RSTCCDC                                            DC3        T        T.sub.DC3                                                                              RSTCCDC                                            DC2        T        T.sub.DC2                                                                              RSTCCDC                                            DC1        T        T.sub.DC1                                                                              RSTCCDC                                            DCφ    T        T.sub.DCφ                                                                          RSTCCDC                                   RAM      F4         T        T.sub.F4                                                                               RSTCCDC                                   Address  F3         T        T.sub.F3                                                                               RSTCCDC                                   Control  F2         T        T.sub.F2                                                                               RSTCCDC                                   and      F1         T        T.sub.F1                                                                               RSTCCDC                                   Refresh  Fφ     T        T.sub.Fφ                                                                           RSTCCDC                                            LC3        T        T.sub.LC3                                                                              RSTCCDC                                            LC2        T        T.sub.LC2                                                                              RSTCCDC                                            LC1        T        T.sub.LC1                                                                              RSTCCDC                                            LCφ    T        T.sub.LCφ                                                                          RSTCCDC                                            HC1        T        T.sub.HC1                                                                              RSTCCDC                                            HCφ    T        T.sub.HCφ                                                                          RSTCCDC                                   Direction                                                                               FWD        T        T.sub.FWD                                                                              RSTALL                                    ROM Access                                                                              ACCROM     T        T.sub.ACC                                                                              RSTALL                                    Control  RAMFULL    T        T.sub.RAMFULL                                                                          RSTCCDC                                            SCOMPT     T        T.sub.SCOMPT                                                                           RSTALL                                    ______________________________________                                    

The home detection and control logic counts the number of dot positions and times out to six milliseconds to get a home position. The logic also counts the number of characters and the number of dots in a row.

The RAM control and refresh logic refreshes the RAM 80 and manages the address for the ROM 52 from the RAM. When the logic is not sending address to the character ROM 52, the logic goes through a refresh cycle to protect the memory in the RAM 80.

The direction logic generates forward (FWD) or backward (FWD) state by sensing the home information from the DOTPOS inputs. A forward state will encode the 15th bit of the serial address true when this chip is accessing the character ROM 52 and the character ROM will return a dot row of the character in correct order.

The ROM access control controls the ROM access time wherein the first access time starts at the second home position after the MTRON becomes true. The second access time occurs immediately after the first row of the first character is printed and follows this order in sequence. The ROM 52 is accessed serially by the printer control chip 50 for both transmitting and receiving data. The serial address is 15 bits long which includes 8 bits of character code, 4 bits of row address, and 3 bits of control code information. The serial data is 14 bits long which includes 12 bits for a dot row and 2 bits for control code information.

The logic equations of PLA2 are as follows:

    __________________________________________________________________________      T.sub.HDφ                                                                           =                                                                                ##STR121##                                                                     ##STR122##                                                                     ##STR123##                                                                     ##STR124##                                                                     ##STR125##                                                          T.sub.HD1                                                                               =                                                                                ##STR126##                                                          T.sub.HD2                                                                               =                                                                                ##STR127##                                                         PRTENABLE                                                                               = ACTPRT . HD2 . HD1 . HDφ                                         RSTFSLEW                                                                                =                                                                                ##STR128##                                                          RSTTIMER                                                                                =                                                                                ##STR129##                                                          T.sub.DCφ                                                                           =                                                                                ##STR130##                                                                     ##STR131##                                                         T.sub.DC1                                                                               = HD2 . HD1 . HDφ . DOT . 9 FONT . DCφ + HD2 . HD1 .                     HDφ .                                                                       ##STR132##                                                                     ##STR133##                                                          T.sub.DC2                                                                               =                                                                                ##STR134##                                                                     ##STR135##                                                         T.sub.DC3                                                                               = HD2 . HD1 . HDφ . DOT . DC2 . DC1 . DCφ + HD2 . HD1 .                  HDφ .                                                                      DOT . 7 FONT . DC3 . DCφ + HD2 . HD1 . HDφ . DOT . 9                   FONT .                                                                          ##STR136##                                                                     ##STR137##                                                                     ##STR138##                                                          HMEPLS   =                                                                                ##STR139##                                                                     ##STR140##                                                          T.sub.CCφ                                                                           =                                                                                ##STR141##                                                                     ##STR142##                                                                     ##STR143##                                                                     ##STR144##                                                          T.sub.CC1                                                                               =                                                                                ##STR145##                                                                     ##STR146##                                                                     ##STR147##                                                                     ##STR148##                                                          T.sub.CC2                                                                               =                                                                                ##STR149##                                                                     ##STR150##                                                                     ##STR151##                                                                     ##STR152##                                                                     ##STR153##                                                                     ##STR154##                                                          T.sub.CC3                                                                               =                                                                                ##STR155##                                                                    CC2 . CC1 . CCφ +  HD2 . HD1 . HDφ . DOT . 7 FONT .                    DC3 .                                                                           ##STR156##                                                                     ##STR157##                                                                     ##STR158##                                                          T.sub.HCφ                                                                           =                                                                                ##STR159##                                                                     ##STR160##                                                                     ##STR161##                                                          T.sub.HC1                                                                               =                                                                                ##STR162##                                                                     ##STR163##                                                                     ##STR164##                                                                     ##STR165##                                                          T.sub.LCφ                                                                           =                                                                                ##STR166##                                                                     ##STR167##                                                                     ##STR168##                                                          T.sub.LC1                                                                               =                                                                                ##STR169##                                                                     ##STR170##                                                          T.sub.LC2                                                                               =                                                                                ##STR171##                                                                     ##STR172##                                                          T.sub.LC3                                                                               =                                                                                ##STR173##                                                                     ##STR174##                                                                     ##STR175##                                                                     ##STR176##                                                                     ##STR177##                                                          RAMFULL  =                                                                                ##STR178##                                                                     ##STR179##                                                          R.sub.Sφ                                                                            =                                                                                ##STR180##                                                          R.sub.S1                                                                                =                                                                                ##STR181##                                                          R.sub.S2                                                                                =                                                                                ##STR182##                                                          R.sub.S3                                                                                =                                                                                ##STR183##                                                          R.sub.S4                                                                                =                                                                                ##STR184##                                                          T.sub.Fφ                                                                            =                                                                                ##STR185##                                                          T.sub.F1                                                                                =                                                                                ##STR186##                                                           T.sub.F2                                                                               =                                                                                ##STR187##                                                          T.sub.F3                                                                                =                                                                                ##STR188##                                                          T.sub.F4                                                                                =                                                                                ##STR189##                                                          SHIFT1   =                                                                                ##STR190##                                                                     ##STR191##                                                                     ##STR192##                                                                     ##STR193##                                                                    VASDATA . FWD . HC1 . HCφ                                        SHIFT2   =                                                                                ##STR194##                                                                     ##STR195##                                                                     ##STR196##                                                                     ##STR197##                                                                     ##STR198##                                                          SHIFT3   =                                                                                ##STR199##                                                                     ##STR200##                                                                     ##STR201##                                                                     ##STR202##                                                                     ##STR203##                                                          SHIFT4   =                                                                                ##STR204##                                                                     ##STR205##                                                                     ##STR206##                                                                     ##STR207##                                                                     ##STR208##                                                          SHIFTALL                                                                                =                                                                                ##STR209##                                                                     ##STR210##                                                                     ##STR211##                                                                     ##STR212##                                                          START CHAIN                                                                             =                                                                                ##STR213##                                                                     ##STR214##                                                                     ##STR215##                                                                     ##STR216##                                                                    DOT . ACTPRT                                                         T.sub.FWD                                                                               =                                                                                ##STR217##                                                                     ##STR218##                                                         T.sub.SCOMPT                                                                            = COMPLETE                                                            T.sub.ACCROM                                                                            = PRTHME + FWD . HC1 . HCφ . COMPLETE . ACCROM . SCOMPT                       ##STR219##                                                                     ##STR220##                                                                     ##STR221##                                                                     ##STR222##                                                         __________________________________________________________________________

In the Tables A-1 and A-2, the status of the command signals or pulses is indicated by T with the subscript notation, such as T_(PRT). In the equations, RDADSADJ is a pulse for the RAM address increment after each memory read during reverse direction of printing and a pulse for the RAM address decrement during forward direction of printing. SHIFT 1-SHIFT 4 indicate that the dot data received from the character ROM are shifted into the respective dot data registers, and SHIFTALL are pulses of dot data shifting out of the registers for printing.

The flow diagrams shown in FIGS. 10-20, inclusive, provide step by step logic of the printer in the operation. FIG. 10 illustrates the data input timing chain (TC2, TC1, and TCφ) wherein TC2=MEMW (memory writing period) and TC1= WRADSADJ (a pulse for the RAM address increment after each memory write). This timing chain is the print data being written into the RAM 80 with the data being written twice when a double width character command is received. DATA is the print data indicator wherein D7·D6·D5·D4=1 and DECODE is a time period for the print data decoding.

FIG. 11 shows the flow diagram of the home detect control (HD2, HD1, HDφ) wherein 6 milliseconds=CC3·CC2·CC1·CCφ·DC3.multidot.DC2·DC1·DCφ·F4·F3·F2·F1·Fφ·MEM. The count dot=9 FONT·DOT·CC3·CC2·CC1·CCφ.multidot.DC3·DC2·DC1·DCφ=7 FONT·DOT·CC3·CC2·CC1·CCφ.multidot.DC3·DC2·DC1·DCφ·DOT=DOTPL+DOTPT. When the motor 14 is turned on, the optical sensor 56 must sense six edges (DOT) of the DOTPOS pulses prior to starting a home search. State 110 is for the purpose of home searching and state 111 is for counting the number of dot position pulses as well as the number of dot columns for one sweep of the sensor. RSTALL in the various figures and in the Tables A-1 and A-2 indicates a resetting of the flip-flops, and RSTTIMER is the resetting of the HOME search timer.

FIG. 12 illustrates the flow diagram of the higher order address counter (HC1, HCφ) wherein A=FWD. RDADSADJ+WRADSADJ·LC3·LC2·LC1·LCφ and B=FWD·RDADSADJ. The high order address is the print data address of the RAM 80 for each print solenoid 24. The A condition is for data being written into the memory or for data being read out when the printer is printing in the reverse direction. The B condition is for data being read out when it is printing in the forward direction. PRTHME is the detected HOME position during printing.

FIG. 13 shows the flow diagram of the low order address counter (LC3, LC2, LC1, LCφ) wherein A=WRADSADJ+FWD·RDADSADJ HC1·HCφ, B=FWD·RDADSADJ·HC1·HCφ, C=FWD·RDADSADJ·HC1·HCφ+WRADSADJ·HC1·HCφ, and D=PRTHME·DOTPOS. The low order address counter is the print data address of the RAM 80 for each print solenoid from the first character to the tenth character. Increment or decrement of the counter is dependent upon the A, B, C and D conditions.

FIG. 14 illustrates the flow diagram of print sequence control (C1, Cφ) wherein C1 and Cφ are at state 0,0 when the printer is idle, and the state changes to 0,1 when a HOME position is detected after a start to print command is received, after which the printer is active in printing during state 11. In state 10, the printer is feeding an extra dot space until a number is matched with the extra dot number in the register and then goes back to state 00. HME PLS is the HOME position signal, ACTPRT is the active printing mode which is started at the second HOME position after the start to print function is received, and MATCH indicates that the status bits for the extra dot row feed control match the bits in the extra dot row register.

FIG. 15 shows the flow diagram of the DOT counter and timer (DC3, DC2, DC1, DCφ) wherein A=HD2·HD1·HDφ·DOT·7 FONT+HD2·HD1·HDφ·DOT·9 FONT+HD2·HD1·HDφ·F4·F3·F2·F1·Fφ·MEM and B=HD2·HD1·HDφ·DOT·9 FONT+HD2·HD1·HDφ·F4·F3·F2·F1·Fφ·MEM. The number of dots per column are counted and are incremented by the A and B conditions. The counter counts to 9 for a 7 font character prior to returning to the 0000 state, and the counter counts to 11 for a 9 font character. Without RAM memory access, the counts are used to refresh the RAM 80. RSTCCDC and CLRCCDC, respectively, indicate the resetting or clearing of the memory address counter, the character counter and the dot counter. CLRALL indicates clearing all registers, memory, and counters except the extra dot row register.

FIG. 16 illustrates the flow diagram of the character counter and timer (CC3, CC2, CC1, CCφ) wherein A=HD2·HD1·HDφ·DOT·DC3·DC2·DC1·DCφ·9 FONT +HD2·HD1·HDφ·DOT·DC3·DC2.multidot.DC1·DCφ·7 FONT+HD2·HD1·HDφ·DC3·DC2·DC1·DCφ·F4·F3·F2·F1.multidot.Fφ·MEM and B=HD2·HD1·HDφ·DOT·DC3·DC2·DC1·DCφ·9 FONT+HD2·HD1·HDφ·DOT·DC3·DC2·DC1·DCφ·7 FONT. The number of characters per sweep are counted with ten characters being counted for both 7 or 9 font. For RAM memory refreshing, the count is to four or to the 0100 state and then returns to the 0000 state.

FIG. 17 shows the flow diagram of the row counter control (RC3, RC2, RC1, RCφ) wherein A=C1·Cφ·HMEPLS·EDLINE·PRT and B=C1·Cφ·HMEPLS·EDLINE·MATCH.multidot.PRT+C1·Cφ·HMEPLS·MATCH·PRT.multidot.RC3, RC2, RC1 and RCφ comprise the row address for the character ROM 52 and address is incremented by A and B conditions when the print sequence control C1 and Cφ are in states 10 or 11.

FIG. 18 illustrates the flow diagram of the extra dot row feed control (CNT2, CNT1, CNTφ) wherein A=C1·Cφ·HEMPLS·EDLINE·MATCH.multidot.PRT, B=C1·Cφ·HMEPLS·MATCH·PRT, and C=C1·Cφ·HMEPLS·MATCH·PRT. This controls the number of extra dot space feeds after a line of print is completed with the number being determined by the A, B, and C conditions.

FIG. 19 shows an exemplary diagram of the paper feed control for 8 steps of logic, wherein A=HMEPLS·MTRON·PRT.

FIG. 20 illustrates the flow diagram of the refresh counter (F4, F3, F2, F1, Fφ) wherein MEM=MEMW (memory writing period)+MEMR (memory reading period) in the RAM 80. The refresh counter increments to refresh the RAM 80 by locations in order to protect the data from fading out when the RAM is not accessed. The break in the flow line indicates that a number of locations are not shown. Also, of the 40 locations available in the RAM 80, 32 locations are utilized by the five bit refresh counter.

It can thus be seen that the logic equations for PLA1 and PLA2 are derived from the operation of the various flip-flops as required by the commands and the control functions during the printing operation.

In the operation of the control system of the present invention the control logic of the printer flags a busy status when it is printing or counting to advance paper. The logic receives parallel 8 bit character code data for print and 8 bit data for control functions to condition the printer controls. A write signal on the write (WR) line strobes data into the control logic and the print data is stored in the memory 80. The control function data is decoded and stored in the programmable logic unit 82 (PLA1). The motor of the printer is turned on and the busy line (BUSY) goes high when the start print function is received. The carriage oscillates or reciprocates twice which allows the paper to advance two dot spaces before printing takes place. The optical sensor is sensing the dot positions from the leading edge and the trailing edge of the slots in the timing strip. The sensor also detects the home positions at the ends of the strip by counting the times of passing either the window area or the web area. If a dot pulse from one of the slots in the strip does not appear within a certain time, the printer is in a home position. The control logic can recognize the carriage direction of movement during printing by detecting the HOME 1 and the HOME 2 positions prior to printing of the next character.

It is remembered that there are four single print wire solenoids 24 mounted in a line across the printer and each print solenoid prints 10 characters in a line. Before each row of a character prints, the data stored in the memory 80 is taken out for the character memory 52 to generate a dot row for each print solenoid 24 to print. The dot row data is loaded into each hammer register and according to the direction of carriage movement, the dot row data is loaded either forward or backward into the registers. Each dot position generates a hammer pulse which makes the print solenoids 24 fire on a presence of each dot of a dot row. The carriage 22 oscillates seven times for completing a 7 dot high character and nine times for a 9 dot high character to complete a line of printing. At the end of the last scan or oscillation, the motor 14 is turned off and the busy line goes low. For either fast or slow paper feed, the motor 14 of the printer is turned on and the busy line goes high when a paper feed data is received. A 7 bit binary number may be chosen to give from 1 to 127 dot row feeds on the slow paper feed and from 1 to 127 line feeds for the fast paper feed option. The carriage 22 continues to oscillate and the counter will time out the paper advance by counting the number of home positions.

It is thus seen that herein shown and described is a printer of modular design and is controlled by a printer control module of the larger scale integrated type, a character read only memory module and associated circuits. Under control of the two modules, the printer can print out single width characters, double width characters or single width and double width characters in the same line. The printer is controlled in a manner wherein bi-directional printing is capable and a single control module which is programmable to be used in a number of different type printers is accomplished by the invention. The control system as shown and described enables the accomplishment of the objects and advantages mentioned above and while one embodiment of the invention has been disclosed herein, variations thereof beyond those herein mentioned may occur to those skilled in the art. It is contemplated that all such variations not departing from the spirit and scope of the invention hereof are to be construed in accordance with the following claims. 

What is claimed is:
 1. A control system for a dot matrix printer having a plurality of aligned printing elements, acarriage supporting said printing elements in position to print on record material, means for moving said carriage in reciprocating manner, a timing member having indicia thereon representative of dot column positions of characters to be printed and indicia for indicating direction of travel of said carriage, a sensing member for sensing said dot column positions indicia for initiating pulse signals for operation of said printing elements and for sensing said direction of travel indicating indicia, means for storing print data and control data in random addressable manner and in latching manner, respectively, character memory means receiving said print data and said control data from said storing means for generating a row of dots in character-by-character sequence, means for addressing the character memory means for only those positions along a character line corresponding to the positions of the print elements at that time, means for decoding row and column address for generating a dot row of print data for transmitting decoded data to said character memory means, means for decoding control data for indicating carriage direction of travel and width of characters to be printed, means for registering said generated dot row data for each character to be printed according to direction of movement of said carriage in bi-directional printing as sensed by said sensing member, and means responsive to the decoded print data from said character memory means for operating said printing elements in accordance with the presence of each dot of a dot row for each respective character as determined by said sensing member.
 2. The control system of claim 1 wherein said timing member includes carriage home position indicia thereon and said sensing member senses a predetermined number of said dot column positions indicia and said home position indicia for determining the direction of printing.
 3. The control system of claim 1 wherein said timing member comprises a strip member having carriage home position indicia comprising an aperture at one end of said strip member and a web area at the other end of said strip member, and wherein the direction of the aperture and the web area determine direction of travel of said carriage.
 4. The control system of claim 1 including latching devices for enabling signals to said printing elements.
 5. The control system of claim 1 wherein said dot column positions indicia comprise spaced apertures in said timing member, said sensing member detects the leading edge and the trailing edge of each said aperture of said timing member, and there are provided data devices for latching the operation of said printing elements.
 6. The control system of claim 1 including a dot row format device and wherein the output of said character memory means is directed to said format device for determining single width and double width character printing in one line thereof.
 7. The control system of claim 3 including means for counting the home positions of said timing strip for determining the number of dot rows between lines of characters.
 8. A dot matrix printer comprising a:platen extending across said printer, a carriage movable a predetermined distance lengthwise of said platen, a plurality of printing elements carried by said carriage and aligned with said platen for operating against record media thereover, means for moving said record media in dot line increments in the printing of a line of characters, means for causing reciprocating movement of said carriage and said printing elements, a timing strip secured to said carriage and having a plurality of aligned indicia along the length of said strip, said strip having carriage home positions defining first home indicia at one end of said strip and second home indicia at the other end of said strip, a sensor on said printer sensing a predetermined number of said aligned indicia and said carriage first and second home positions for initiating printing pulses from said aligned indicia and for indicating the position and direction of movement of said carriage from sensing of the respective first and second home positions, means for counting the number of times a home position is sensed for indicating start of printing, memory means receiving input data and storing thereof in random addressable character-by-character manner, means for monitoring input data as print data and as control data for causing printing of the dots in a row thereof as required by each succeeding character to be printed in accordance with said print data, character memory means receiving said print data and said control data for generating a dot row for each character in character-by-character sequence, means for addressing the character memory means for only those positions along a character line corresponding to the positions of the print elements at that time, means for registering the generated dot row for each character to be printed according to direction of movement of said carriage as sensed by said sensor, and means responsive to the accessible print data from said character memory means for operating said printing elements in successive dot rows for each character in printing a line thereof in both directions of carriage movement
 9. The printer of claim 8 wherein said aligned indicia comprises a plurality of slots in said timing strip and said first home and second home indicia comprise an aperture in and a web area of said timing strip.
 10. The printer of claim 8 including a dot row format device and wherein the output of said character memory means is directed to said dot row format for determining single width and double width character printing in one line thereof.
 11. The printer of claim 8 including dot row and column decoders and a control pulse decoder for generating selected pulses for enabling said means for operating said printing elements in successive dot rows for successively printing each character.
 12. In a dot matrix printer for printing a line of characters in dot incremental manner, aplurality of printing elements positioned along a line to print on record material, a carriage for carrying said printing elements in one and the other direction a predetermined distance across said printer, a timing strip carried by said carriage, said timing strip having indicia corresponding to dot positions of said characters and to the ends of travel of said carriage, a sensor for sensing said timing strip indicia for initiating operation of said printing elements and for indicating direction of travel of said carriage, memory means for storing print data in random accessible manner, logic array means for storing control data in latching manner, character memory means receiving said print data and said control data for generating a row of dots for printing of characters in character-by-character sequence, means for addressing the character memory means for only those positions along a character line corresponding to the positions of the print elements at that time, means for decoding said control data in accordance with the width of characters to be printed, means for loading dot row data according to direction of movement of said carriage, said means responsive to the print data from said character memory means for operating said printing elements in accordance with said dot row data for successive characters in a line thereof.
 13. In the printer of claim 12 including means for decoding row and column address of print data for transmitting decoded data to said character memory means.
 14. In the printer of claim 12 including means for counting the number of times said carriage passes an end of travel position.
 15. In the printer of claim 12 wherein said timing strip includes a window and a web area at the ends thereof for indicating direction of travel of said carriage.
 16. In the printer of claim 12 wherein said printing elements are solenoid operated print wires. 